#include<bits/stdc++.h>
using namespace std;
long long T;
long long  n,m,l,V;
long long  d[100005],v[100005],a[100005];
long long  p[100005];
int main(){
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    cin>>T;
    while(T--){
        long long  sum=0;
        memset(d,sizeof(d),0);
        memset(v,sizeof(v),0);
        memset(a,sizeof(a),0);
        memset(p,sizeof(p),0);
        cin>>n>>m>>l>>V;
        for(int i=1;i<=n;i++){
            cin>>d[i]>>v[i]>>a[i];
        }
        for(int i=1;i<=m;i++){
            cin>>p[i];
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                if(d[i]<=p[j]){
                    long long  dis=p[j]-d[i];
                    long long  v_now=2*a[i]*dis+v[i]*v[i];
                    if(v_now>V*V){
                        sum++;
                        break;
                    }
                }
            }
        }
        cout<<sum<<' ';
        if(sum!=0){
            bool car[n][m];
            for(int i=1;i<=n;i++){
                for(int j=1;j<=m;j++){
                    car[i][j]=0;
                    if(d[i]<=p[j]){
                        long long  dis=p[j]-d[i];
                        long long  v_now=2*a[i]*dis+v[i]*v[i];
                        if(v_now>V*V){
                            car[i][j]=1;
                        }
                    }
                }
            }
            int power[m];
            bool flag=0;
            for(int i=1;i<=m;i++){
                for(int j=1;j<=n;j++){
                    power[i]=0;
                    if(car[i][j]==1){
                        power[i]++;
                    }
                }
                if(power[i]==n){
                    cout<<m-1;
                    flag=1;
                    break;
                }
            }
            if(flag!=1){
                sort(power+1,power+1+n);
                int sumn=1;
                for(int i=m;i>=0;i++){
                    sumn+=i;
                    if(sumn>=n){
                        cout<<m-i;
                        break;
                    }
                }
            }
        }
    }
return 0;
}
